package com.example.controller;

import com.example.utils.Result;
import com.example.entity.Scientific;
import com.example.service.ScientificService;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

@RestController
@RequestMapping("/scientific")
public class ScientificController {

    @Resource
    ScientificService scientificService;

    // 添加科研成果
    @PostMapping("/add")
    public Result add(@RequestBody Scientific scientific, HttpSession session) {
        // 设置当前登录用户的学生ID
        scientific.setStuId((Integer) session.getAttribute("id"));
        // 设置科研成果的状态为0（待审核）
        scientific.setState(0);
        // 调用科研成果服务的添加方法
        String msg = scientificService.add(scientific);
        if (msg != null) {
            return Result.error(msg); // 添加失败，返回错误信息
        }
        return Result.success(); // 添加成功，返回成功信息
    }

    // 删除科研成果
    @DeleteMapping("/delete/{id}")
    public Result delete(@PathVariable Integer id) {
        // 调用科研成果服务的根据ID删除方法
        scientificService.deleteById(id);
        return Result.success(); // 返回删除成功信息
    }

    // 查看科研成果详情
    @GetMapping("/detail/{id}")
    public Result detail(@PathVariable Integer id) {
        // 返回根据ID查询到的科研成果详情
        return Result.success(scientificService.getById(id));
    }

    // 更新科研成果信息
    @PutMapping("/update")
    public Result update(@RequestBody Scientific scientific) {
        Integer state = scientific.getState();
        // 如果状态为已通过（state=1），则清空审核未通过的原因
        if (state != null && state == 1) {
            scientific.setReason(null);
        }
        // 调用科研成果服务的更新方法
        scientificService.updateById(scientific);
        return Result.success(); // 返回更新成功信息
    }

    // 分页查询当前登录学生的科研成果列表
    @GetMapping("/selectPage")
    public Result selectPage(@RequestParam(defaultValue = "1") Integer pageNum,
                             @RequestParam(defaultValue = "10") Integer pageSize,
                             Scientific scientific,
                             HttpSession session) {
        // 设置查询条件中的学生ID为当前登录用户的ID
        scientific.setStuId((Integer) session.getAttribute("id"));
        // 调用科研成果服务的分页查询方法
        PageInfo<Scientific> pageInfo = scientificService.selectPage(pageNum, pageSize, scientific);
        return Result.success(pageInfo); // 返回分页查询结果
    }
}
